package main

import "fmt"

func main() {
	fmt.Println("5. 条件语句")

	// if 语句
	score := 85
	if score >= 60 {
		fmt.Println("及格了!")
	}

	// if-else 语句
	if score >= 90 {
		fmt.Println("优秀")
	} else if score >= 80 {
		fmt.Println("良好")
	} else if score >= 60 {
		fmt.Println("及格")
	} else {
		fmt.Println("不及格")
	}

	// if 语句中可以放置初始化语句
	if n := 10; n%2 == 0 {
		fmt.Printf("%d 是偶数\n", n)
	} else {
		fmt.Printf("%d 是奇数\n", n)
	}

	// switch 语句 (不需要break)
	day := 3
	switch day {
	case 1:
		fmt.Println("星期一")
	case 2:
		fmt.Println("星期二")
	case 3:
		fmt.Println("星期三")
	case 4:
		fmt.Println("星期四")
	case 5:
		fmt.Println("星期五")
	case 6:
		fmt.Println("星期六")
	case 7:
		fmt.Println("星期日")
	default:
		fmt.Println("无效的日期")
	}

	// switch 语句可以没有条件表达式
	grade := 88
	switch {
	case grade >= 90:
		fmt.Println("等级: A")
	case grade >= 80:
		fmt.Println("等级: B")
	case grade >= 70:
		fmt.Println("等级: C")
	case grade >= 60:
		fmt.Println("等级: D")
	default:
		fmt.Println("等级: F")
	}

	// switch 语句中的fallthrough关键字
	char := "a"
	switch char {
	case "a":
		fmt.Println("字符是 a")
		fallthrough // 执行下一个case，即使条件不满足
	case "b":
		fmt.Println("字符是 b")
		fallthrough
	case "c":
		fmt.Println("字符是 c")
	default:
		fmt.Println("其他字符")
	}

	// switch 用于类型判断
	var value interface{} = 42
	switch v := value.(type) {
	case int:
		fmt.Printf("value 是 int 类型，值为 %d\n", v)
	case string:
		fmt.Printf("value 是 string 类型，值为 %s\n", v)
	case bool:
		fmt.Printf("value 是 bool 类型，值为 %t\n", v)
	default:
		fmt.Printf("value 是其他类型，值为 %v\n", v)
	}
}
